package com.github.mvc.basic.controller;

/**
 * <p>SpringMVC控制器ajax请求返回封装</p>
 * @author  Crab2Died
 */
public class BaseController {

    /**
     * <p>ajax请求返回对象</p>
     */
    private class AjaxReturn {

        /**
         * 错误码
         */
        private int err;

        /**
         * 返回描述信息
         */
        private String msg;

        /**
         * 返回数据
         */
        private Object data;

        public AjaxReturn() {

        }

        public AjaxReturn(int err, String msg, Object data) {
            this.err = err;
            this.msg = msg;
            this.data = data;
        }

        public int getErr() {
            return err;
        }

        public void setErr(int err) {
            this.err = err;
        }

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        public Object getData() {
            return data;
        }

        public void setData(Object data) {
            this.data = data;
        }
    }

    private AjaxReturn ajaxReturn(int err, String msg, Object data) {
        AjaxReturn obj = new AjaxReturn(err, msg, data);
        return obj;
    }

    /**
     * <p>ajax返回成功结果。错误码为：0，消息为：null， 数据为：null</p>
     */
    public AjaxReturn ajaxOk() {
        return ajaxReturn(0, null, null);
    }

    /**
     * <p>ajax返回成功结果</p>
     *
     * @param msg  返回信息
     * @param data 返回数据
     */
    public AjaxReturn ajaxOk(String msg, Object data) {
        return ajaxReturn(0, msg, data);
    }

    /**
     * <p>ajax返回错误信息</p>
     * @author  Crab2Died
     *
     * @param err  错误码
     * @param msg  返回信息
     * @param data 返回数据
     */
    public AjaxReturn ajaxErr(int err, String msg, Object data) {
        return ajaxReturn(err, msg, data);
    }

    /**
     * <p>ajax返回异常信息</p>
     *
     * @param e 异常信息
     */
    public AjaxReturn ajaxEx(Exception e) {
        return ajaxReturn(-1, e.getMessage(), null);
    }
}
